home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GameStar 2004 April
/
Gamestar_61_2004-04_dvdb.iso
/
DVDStar
/
Editace
/
hltp.exe
/
{app}
/
Applications
/
QuArK
/
quarkpy
/
qtoolbar.py
< prev
next >
Wrap
Text File
|
2004-01-05
|
5KB
|
164 lines
""" QuArK - Quake Army Knife
Tool Bars and Buttons
"""
#
# Copyright (C) 1996-99 Armin Rigo
# THIS FILE IS PROTECTED BY THE GNU GENERAL PUBLIC LICENCE
# FOUND IN FILE "COPYING.TXT"
#
#$Header: /cvsroot/quark/runtime/quarkpy/qtoolbar.py,v 1.4 2003/03/16 02:42:34 tiglari Exp $
#
import quarkx
from qutils import *
# button state
normal = 0
selected = 2
disabled = 4 # can be added to the above
class button:
"A ToolBar button."
#
# A button's onclick attribute must be a callback function,
# called by QuArK when the user clicks on the button.
# It will be called with the button object itself as parameter.
#
def __init__(self, onclick, hint, iconlist, iconindex, caption=None, capalways=0, infobaselink=''):
self.onclick = onclick
self.hint = hint
self.state = normal
self.caption = caption
self.hint = hintPlusInfobaselink(hint, infobaselink)
if capalways:
self.capalways = 1
if iconindex is None:
if iconlist is None:
self.icons = None
self._icons = None
self._cap = None
return
if len(iconlist)<3:
icon, iconmouse = iconlist
iconsel = iconmouse
else:
icon, iconmouse, iconsel = iconlist
else:
icon = iconlist[0][iconindex]
iconmouse = iconlist[1][iconindex]
if len(iconlist)<3:
iconsel = iconmouse
else:
iconsel = iconlist[2][iconindex]
self._icons = (icon, iconmouse, iconmouse, iconsel, iconsel, icon.disabledimage)
self._cap = caption
if caption:
if BtnText:
self.icons = None
else:
self.icons = self._icons
if not capalways:
self.caption = None
else:
self.icons = self._icons
self._icons = None
def getcaption(self):
if self.caption: return self.caption
if self._cap: return self._cap
s = self.hint
try:
return s[list(s).index('|')+1:]
except:
return s
def menubutton(menu, hint, iconlist, iconindex, infobaselink=''):
"A button that drops down a menu."
m = button(None, hint, iconlist, iconindex, infobaselink)
m.menu = menu
return m
def doublebutton(onclick, menu, hint, iconlist, iconindex, infobaselink=''):
"A button with both a menu and direct clicks (e.g. the grid and zoom buttons)."
hint = hintPlusInfobaselink(hint, infobaselink)
m = button(onclick, hint, iconlist, iconindex)
m.menu = menu
return m
def toggle(btn):
"Toggles the state of a button."
btn.state = btn.state ^ selected
quarkx.update()
def macrobtn(macro, hint, iconlist, iconindex, caption=None, infobaselink=""):
"A button that executes a single macro command."
b = button(macroclick, hint, iconlist, iconindex, caption, infobaselink)
b.macro = macro
return b
def macroclick(b):
if not (quarkx.clickform is None):
quarkx.clickform.macro(b.macro)
# a separator line in the toolbar
sep = None
# special separators for button panels (not for toolbars)
smallgap = None
widegap = 1
padright = 2 # the next button only is sent at the right end of the line
newline = 3
def BtnPrefChanged(level):
global BtnText
BtnText1 = quarkx.setupsubset(qutils.SS_GENERAL, "Display")["BtnText"]
if (not BtnText) == (not BtnText1):
return
BtnText = BtnText1
for f in quarkx.forms():
for tb in f.toolbars() + f.btnpanels():
for b in tb.buttons:
if not (b in (sep, smallgap, widegap, padright, newline)):
if BtnText:
if b.icons is b._icons:
b.icons = None
if not b.caption:
b.caption = b._cap
else:
if b.caption is b._cap and not hasattr(b, "capalways"):
b.caption = None
if b.icons is None:
b.icons = b._icons
tb.update()
import qutils
qutils.SetupRoutines.append(BtnPrefChanged)
BtnText = quarkx.setupsubset(qutils.SS_GENERAL, "Display")["BtnText"]
# ----------- REVISION HISTORY ------------
#
#
#$Log: qtoolbar.py,v $
#Revision 1.4 2003/03/16 02:42:34 tiglari
#Added infobaselink arg to a few more buttons
#
#Revision 1.3 2003/03/15 20:40:50 cdunde
#To update hints and add infobase links
#
#Revision 1.2 2000/06/02 16:00:22 alexander
#added cvs headers
#
#
#